home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / tex / meta27 / mfpandor.lzh / pnssi10.mf < prev    next >
Text File  |  1990-11-16  |  12KB  |  200 lines

  1. %*****************************************************************************
  2. %        Copyright (c) 1989 by N. N. Billawala
  3. %*****************************************************************************
  4.  
  5.  
  6. % pnssi10.mf   Pandora Sans Serif Oblique 10 point
  7.  
  8. font_identifier:="PNSSI";
  9.  
  10. mode_setup;                             % general setup
  11. input pandor                            % general definitions used in pandora
  12.  
  13. designsize:= 10pt#;                     % intended "ideal" size for parameters
  14. width#:=     10pt#;                     % width of an em
  15. maxheight#:= 7.75pt#;                   % max height for delimiters,e.g., [,{,(
  16. ascender#:=  7.5pt#;                    % height of ascenders, e.g., on l,h,k
  17. cap#:=       7pt#;                      % height of uppercase, e.g., B,H,L
  18. xheight#:=   5pt#;                      % xheight of lowercase, e.g., x,n,o
  19. descender#:= 2pt#;                      % depth of descenders, e.g., on j,p,q
  20. maxdepth#:=  2.25pt#;                   % max depth for delimiters,e.g., [,{,(
  21. math_axis#:= .5[maxheight#,-maxdepth#]; % vertical alignment for math 
  22.  
  23. accent_height#:=.3(ascender#-xheight#); % places bottom of accents 
  24. accent_depth#:=min(.5xheight#,.7(ascender#-xheight#)); % character ref box depth
  25.  
  26. define_whole_vertical_pixels(width,maxheight,ascender,cap,xheight,descender,
  27.   maxdepth,math_axis,accent_depth);
  28.  
  29. fixed_pitch_characters(false)(0);       % true/false, # of characters per inch
  30. oblique:=10;                            % slant of character reference points
  31.  
  32. bowlstem.uc#:=1.05    *fixed_pt;        % uppercase (uc) bowl width
  33. bowlstem.lc#:=1       *fixed_pt;        % lowercase (lc) bowl width
  34. stem.uc#:=1           *fixed_pt;        % uppercase stem width
  35. stem.lc#:=.95         *fixed_pt;        % lowercase stem width
  36. thin_stem.uc#:=.75    *fixed_pt;        % width of thin uppercase stems
  37. thin_stem.lc#:=.7     *fixed_pt;        % width of thin lowercase stems
  38. define_pixels
  39.   (bowlstem.uc,bowlstem.lc,stem.uc,stem.lc,thin_stem.uc,thin_stem.lc);
  40.  
  41. boldness:=1;
  42. makeknown(fitbasis.lc#)(.19*width#);
  43. makeknown(fitbasis.uc#)(.27*width#);
  44.  
  45. apex.uc:=inlimit(.5stem.uc)(0,stem.uc); % apex flatness in uppercase
  46. apex.lc:=inlimit(.5stem.lc)(0,stem.lc); % apex flatness in lowercase
  47. ov_t.uc:=.02cap;                        % top curve overshoot for uppercase
  48. ov_t.lc:=.02xheight;                    % top curve overshoot for lowercase
  49. ov_b.uc:=.02cap;                        % bottom curve overshoot for uppercase
  50. ov_b.lc:=.02xheight;                    % bottom curve overshoot for lowercase
  51. ov_apex.uc:=.02cap;                     % apex overshoot for uppercase
  52. ov_apex.lc:=.02xheight;                 % apex overshoot for lowercase   
  53. apex_angle:=oblique;                    % for changing the angle at apex 
  54. if xheight<25:lowres_fix(ov_t.lc,ov_b.lc,ov_apex.lc); fi
  55. if cap<70:lowres_fix(ov_t.uc,ov_b.uc,ov_apex.uc); fi
  56.  
  57.                                         % for SERIFS and ARMS
  58. serif_thickness:=inlimit(eps)(eps,.5xheight); % base thickness of h-serifs
  59. terminal_thickness:=serif_thickness;    % base thickness of terminal serifs
  60. tip_thickness:=     serif_thickness;    % base thickness of arms
  61. bulb_thickness:=    .2pt;               % (base) thickness of bulbs
  62. x_bracket_h:=inlimit(.2xheight)(serif_thickness,.5xheight); % lc bracket join
  63. cap_bracket_h:=inlimit(.2cap)(serif_thickness,.5cap);       % uc bracket join
  64. bool(ctrls):=false;                     % for explicit placement of control pts
  65. onbase:=inlimit(0)(0,1);                % places control pt along base of serif
  66. onstem:=inlimit(0)(0,1);                % places control pt along stem of serif
  67. midbracket_pull:=    inlimit(.4)(0,1);  % pulls brackets in on arms and serifs
  68. entasis:=            inlimit(.1)(0,1);  % amount of arc in horizontal serif base
  69. terminal_entasis:=   inlimit(.1)(0,1);  % amount of arc in terminal serif base
  70. arm_angle:=          inlimit(10)(0,60); % global angle off of 90 degrees
  71. asc_terminal_angle:= inlimit(0)(0,60);  % at ascender height: from 0 deg...h,k,l
  72. x_terminal_angle:=   inlimit(0)(0,60);  % at x-height: from 0 deg...m,n,r
  73. base_terminal_angle:=inlimit(0)(0,60);  % at base line: from 0 deg...u
  74. diag_terminal_angle:=inlimit(0)(0,60);  % on diagonals: from 0 deg...k,v,w,y
  75. hs:=.6pt;                               % global horizontal serif length
  76. ts:=.6pt;                               % global terminal serif length
  77. as:=.6pt;                               % global arm length
  78. cs:=.65pt;                              % global curvedarm length
  79. serif_constant_amt:=0pt;                % adds same length amount to all serifs
  80. bool(bulbs):=false;                     % arms become bulbs if true
  81. bool(bulb_taper):=true;                 % changes bulbs to tapering shape
  82. taper_angle:=if bulb_taper:10 else:0 fi;% if bulb_taper, adjusts angle at end
  83. bulb_taper_amt:=1;                      % taper length as a % of limb thickness
  84. c_and_s.lc:=.75stem.lc;                 % c,s bulb length if bulb_taper=true
  85. c_and_s.uc:=.85stem.uc;                 % C,G,S bulb length if bulb_taper=true
  86. terminal_softness:=.2stem.lc;           % softness in heel of the terminal serif
  87. arm_softness:=.2thin_stem.lc;           % softness in the heel of the arm
  88.  
  89.                                         % ARCHES
  90. arch_thickness.uc:=.6stem.uc;           % uppercase arch thickness
  91. arch_thickness.lc:=.6stem.lc;           % lowercase arch thickness
  92. arch_tip.uc:=.8stem.uc;                 % thinnest part of the uc arch
  93. arch_tip.lc:=.8stem.lc;                 % thinnest part of the lc arch
  94. arch_reference:=inlimit(.7)(.4,.95);    % puts ref pts between tip/stem
  95. arch_inner_amt:=inlimit(.8)(.4,.95);    % puts arch pts between tip/ref pts
  96. r_arch:=l_arch:=inlimit(.6)(0,1);       % y-value of max outer stress on r_arch
  97. bool(ensure_min_archthickness):=true;   % guarantees minimum thickness
  98.  
  99.                                         % BOWLS
  100. major_curve.uc:=thin_stem.uc;           % uppercase major bowl curve thickness
  101. major_curve.lc:=arch_thickness.lc;      % lowercase major bowl curve thickness
  102. minor_curve.uc:=.9thin_stem.uc;         % uppercase minor bowl curve thickness
  103. minor_curve.lc:=.9arch_thickness.lc;    % lowercase minor bowl curve thickness
  104. major_bowl_tip.lc:=arch_tip.lc;         % lowercase major bowl tip thickness
  105. minor_bowl_tip.lc:=.8minor_curve.lc;    % lowercase minor bowl tip thickness
  106. major_bowl_reference:=inlimit(.6)(.4,.95); % puts ref pts between tip/bowlstem
  107. minor_bowl_reference:=inlimit(.5)(.4,.95); % puts ref pts between tip/bowlstem
  108. major_bowl_inner_amt:=inlimit(.7)(.4,.95); % puts arch pts between tip/ref pts 
  109. minor_bowl_inner_amt:=inlimit(.7)(.4,.95); % puts arch pts between tip/ref pts
  110.  
  111. define_minimums(                        % these values keep a one pixel minimum
  112.   bowlstem.lc,stem.lc,thin_stem.lc,apex.lc,arch_thickness.lc,arch_tip.lc,
  113.   bowlstem.uc,stem.uc,thin_stem.uc,apex.uc,arch_thickness.uc,arch_tip.uc,
  114.   major_curve.lc,minor_curve.lc,major_bowl_tip.lc,minor_bowl_tip.lc,
  115.   major_curve.uc,minor_curve.uc);
  116.  
  117.                                         % ARCHES and BOWLS and CIRCULAR SHAPES
  118. v_stress:=.52;                          % places point of vert stress on bowl
  119. h_stress:=.51;                          % places horzstress on circular shapes
  120. ductal:=inlimit(.25)(0,1);              % for more ductal strokes: value of 1
  121. minor_ductal.lc:=.1*(xheight-minor_curve.lc-major_curve.lc); % minor curve join
  122. circ1:=inlimit(1)(.75,1.5);             % tension of outer curve shapes
  123. circ2:=inlimit(1)(.75,1.5);             % tension of inner curve shapes
  124. circ3:=inlimit(circ1-.07)(.75,1.5);     % tension of outer circular_shapes
  125.                           
  126.                                         % JUNCTURES and NOTCHES
  127. bool(softjuncture):=false;              % are junctures soft? in junct macro
  128. juncture_opening:=inlimit(.05stem.lc)(0,stem.lc);% indent into stem at juncture
  129. stemcut_angle:=-2;                      % cut into stem at angle off of 90
  130. archcut_angle:=0;                       % cuts into regular arch path
  131. notch_length.uc:=.05stem.uc;            % length of corrective notching (uc)
  132. notch_length.lc:=.05stem.lc;            % length of corrective notching (lc)
  133. notch_width:=1;                         % wid